Workflow and in-context E-mail recipient handling

ABSTRACT

Various technologies and techniques are disclosed that improve the workflow process for resolving data elements, such as email addresses. These technologies and techniques allow the user to perform such tasks in the same context as the activity or message. In addition, user can start and stop the resolution process at any point in the process of composing the activity or email. The activity cannot be finalized, such as an email message being sent, until all of the data elements are resolved.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a continuation of U.S. patent applicationSer. No. 11/315,408 (now U.S. Pat. No. 8,402,093), filed on Dec. 22,2005, the entirety of which is incorporated by reference herein.

BACKGROUND

Email can be accessed and used at the workplace through various softwareprograms and company servers or remotely viasa a web access program.Email accounts on home computers can be accessed through a softwareprogram such as MICROSOFT® Office OUTLOOK®, or from a web-accessprogram, such as MICROSOFT® Office OUTLOOK® Web Access (OWA). Presentemail utilities can contain a feature whereby the user can partiallyenter an email address and the system automatically completes the entry,based on available data. Problems can arise when a user enters an emailaddress that the system does not recognize.

Current technologies attempt to reconcile ambiguous or unrecognizedemail addresses by redirecting the user to a different interface.Current processes are cumbersome and can be confusing. Methods for dataentry, searches, confirmation, and other conventions used in theinterface may vary from that of the email program. In addition, once theprocess starts, the user must remain in that interface until allambiguous or questionable email addresses are resolved. The user cannotleave the interface to begin work on the email message until all addressambiguities are resolved.

SUMMARY

Various technologies and techniques are disclosed that improve theprocess for resolving data elements, such as email addresses. Some orall of these technologies and techniques can improve the speed and easewith which users can complete the resolution process, as well as performthe task within the same context as the rest of the program or activity.The user can remain in the program or activity without needing to moveto a different screen. Furthermore, the user can start and stop theprocess as desired. By way of example and not limitation, the user cancompose part or all of an email message before completing the resolutionprocess. Non-limiting examples of this technology can be used to resolveother ambiguities, including those in non-email applications. As onenon-limiting example, the process for scheduling rooms could be resolvedusing the same technology and techniques. These technologies andtechniques can be used with other software programs, such as mappingapplications, travel guides, or programs that evaluate patientnames/data.

This Summary was provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used as an aid in determining the scope of the claimed subjectmatter.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagrammatic view of a computer system of oneimplementation.

FIG. 2 is a diagrammatic view of a data element resolution applicationof one implementation operating on the computer system of FIG. 1.

FIG. 3 is a high-level process flow diagram for one implementation ofthe system of FIG. 1.

FIG. 4 is a process flow diagram for one implementation of the system ofFIG. 1 illustrating the stages involved in resolving data elements.

FIG. 5 is a process flow diagram for one implementation of the system ofFIG. 1 illustrating the stages involved in resolving data elements basedon various status identifiers.

FIG. 6 is a process flow diagram for one implementation of the system ofFIG. 1 illustrating the system's stages involved in allowing a user toresume the resolution process later.

FIG. 7 is a process diagram for one implementation of the system of FIG.1 that illustrating details of FIG. 6 in the stages involved in theresolution process when a user tries to finalize the activity.

FIG. 8 is a simulated screen for one implementation of the system ofFIG. 1 that illustrates user options when no match is found for auser-generated email address entry.

FIG. 9 is a simulated screen for one implementation of the system ofFIG. 1 that illustrates user options when no exact match is found for auser-generated email address entry.

FIG. 10 is a simulated screen for one implementation of the system ofFIG. 1 that illustrates user options when more than one match is foundfor a user-generated email address entry.

FIG. 11 is a simulated screen for one implementation of the system ofFIG. 1 that illustrates user options when a server error is encountered.

DETAILED DESCRIPTION

For the purposes of promoting an understanding of the principles of theinvention, reference will now be made to the embodiments illustrated inthe drawings and specific language will be used to describe the same. Itwill nevertheless be understood that no limitation of the scope isthereby intended. Any alterations and further modifications in thedescribed embodiments, and any further applications of the principles asdescribed herein are contemplated as would normally occur to one skilledin the art.

The system may be described in the general context as an applicationthat improves the workflow process for resolving data elements, such asemail addresses, but the system also serves other purposes in additionto these. In one implementation, one or more of the techniques describedherein can be implemented as features within an email program such asMICROSOFT® Office OUTLOOK®, MICROSOFT® Office OUTLOOK® Web Access (OWA),AOL Anywhere, or from any other type of program or service that allowscreation of email messages. In another implementation, one or more ofthe techniques described herein are implemented as features with otherapplications that deal with data elements that need resolved, such asconference rooms, postal addresses, and/or patient data, to name a fewnon-limiting examples. In one implementation, a user enters a particulardata element, such as a plain text name, and the system attempts toresolve that data element to an identifier associated with theparticular element, such as an email address. In another implementation,the user enters a particular data element and the system attempts toresolve that data element to make sure it matches something that exists.

As shown in FIG. 1, an exemplary computer system to use for implementingone or more parts of the system includes a computing device, such ascomputing device 100. In its most basic configuration, computing device100 typically includes at least one processing unit 102 and memory 104.Depending on the exact configuration and type of computing device,memory 104 may be volatile (such as RAM), non-volatile (such as ROM,flash memory, etc.) or some combination of the two. This most basicconfiguration is illustrated in FIG. 1 by dashed line 106.

Additionally, device 100 may also have additionalfeatures/functionality. For example, device 100 may also includeadditional storage (removable and/or non-removable) including, but notlimited to, magnetic or optical disks or tape. Such additional storageis illustrated in FIG. 1 by removable storage 108 and non-removablestorage 110. Computer storage media includes volatile and nonvolatile,removable and non-removable media implemented in any method ortechnology for storage of information such as computer readableinstructions, data structures, program modules or other data. Memory104, removable storage 108 and non-removable storage 110 are allexamples of computer storage media. Computer storage media includes, butis not limited to, RAM, ROM, EEPROM, flash memory or other memorytechnology, CD-ROM, digital versatile disks (DVD) or other opticalstorage, magnetic cassettes, magnetic tape, magnetic disk storage orother magnetic storage devices, or any other medium which can be used tostore the desired information and which can accessed by device 100. Anysuch computer storage media may be part of device 100.

Computing device 100 includes one or more communication connections 114that allow computing device 100 to communicate with one or more servers,such as server with email data store 115. Computing device 100 may alsocommunicate with one or more computers and/or applications 117. Device100 may also have input device(s) 112 such as keyboard, mouse, pen,voice input device, touch input device, etc. Output device(s) 111 suchas a display, speakers, printer, etc. may also be included. Thesedevices are well known in the art and need not be discussed at lengthhere.

Turning now to FIG. 2 with continued reference to FIG. 1, an dataelement resolution application 200 operating on computing device 100 isillustrated. Data element resolution application 200 is one of theapplication programs that reside on computing device 100. Alternativelyor additionally, one or more parts of data element resolutionapplication 200 can be part of system memory 104, on other computersand/or servers 115, or other such variations as would occur to one inthe computer software art.

Data element resolution application 200 includes business logic 204,which is responsible for carrying out some or all of the techniquesdescribed herein. Business logic 204 includes logic for checking dataelements entered by the user and determining whether they are unresolved206, logic for determining a list of potential data elements forunresolved item(s) 208, logic for displaying a suggested list ofpotential data elements in the same context with rest of the application210, logic for allowing the user to continue working with the activityand resume the resolution process later 212, logic for prompting theuser with viable options for resolution 214, and other logic foroperating the application 220. In one implementation, business logic 204is operable to be called programmatically from another program, such asusing a single call to a procedure in business logic 204.

In one implementation, business logic 204 resides on computing device100. However, it will be understood that business logic 204 canalternatively or additionally be embodied as computer-executableinstructions on one or more computers and/or in different variationsthan shown on FIG. 2. Alternatively or additionally, one or more partsof data element resolution application 200 can be part of system memory104, on other computers and/or applications 117, or other suchvariations as would occur to one in the computer software art.

The examples presented herein illustrate using these technologies andtechniques with an email application in one implementation. However, asdiscussed previously, in other implementations these technologies andtechniques are used with other systems for resolving other types of dataelements, such as postal addresses, conference rooms, patient records,etc.

Turning now to FIGS. 3-4 with continued reference to FIGS. 1-2, thestages for implementing one or more implementations of data elementresolution application 200 are described in further detail. FIG. 3 is ahigh level process flow diagram for data element resolution application200. In one form, the process of FIG. 3 is at least partiallyimplemented in the operating logic of computing device 100.

The procedure begins at start point 240 with analyzing information theuser inputs into one or more data element fields (stage 242), such as anemail address entered into an address field in an email message. Thesystem attempts to retrieve existing information from one or more datastores (stage 244). Data stores can include, but are not limited to,databases, files on a local and/or remote computer, and/or other datastorage systems. As one non-limiting example, email addresses areretrieved from one or more central data stores of stored informationknown as “contacts.” Separate data stores can contain global andpersonal contact information. One example of a data store for globalcontacts is the email addresses for all employees in a company. Anothernon-limiting example of contacts is email information that each employeecan enter into a personal contacts repository. Such original datasources can be used to obtain information, which can then be used bydata element resolution application 200. In another implementation, dataelements are retrieved by data element resolution application 200 whenaccessed via a web server over the Internet.

The information is analyzed (stage 246) and compared to user input.Information regarding potential matches is grouped togetherappropriately and displayed as a context menu (stage 248) within theapplication. Other types of menus or dialogs that allow the user toremain in the same context in the application and select a particularoperation could also be used. The context menu includes one or moreoptions of appropriate action to take to resolve an ambiguous dataelement (stage 260). When the user completes a valid action, resolutionfor that data element is complete (stage 264). The process ends at point266.

FIG. 4 illustrates one implementation of a more detailed process forresolving data elements. In one form, the process of FIG. 4 is at leastpartially implemented in the operating logic of computing device 100.The procedure begins at start point 280 with the user entering part orall of an address into one or more data element fields (stage 282). Theuser engages the resolution process (stage 284), which cues the systemto compare the user's entries with data elements stored locally on thecomputing device 100 or remotely on a server 115. In one implementation,the resolution process is engaged when the user selects a resolveoption, such as upon selecting a check names option.

In another implementation, the resolution process is engaged as the usertypes an address in the address field. Other variations are alsopossible for controlling how the user engages the resolution process.The presence of one or more ambiguous data elements causes a contextmenu to appear within the user's application (stage 286). The userreconciles the discrepancy by selecting from a list of close matches orby otherwise resolving the discrepancy (stage 288). The selected orkeyed name replaces the ambiguous name in the address field (stage 290).If more than one data element is ambiguous, the process is repeated(stage 292) until all data elements are resolved. Then the user isallowed to finalize the activity, such as send the email, when theresolution process is complete (stage 294). The process ends at endpoint 296.

FIG. 5 illustrates the stages involved in resolving data elements basedon particular status identifiers in one implementation. In one form, theprocess of FIG. 5 is at least partially implemented in the operatinglogic of computing device 100. The user performs an action thatactivates the address resolution process (stage 321). The systemrecognizes user input into one or more address fields (stage 322). Thesystem compares the input to available data stores of data elements(e.g. contacts) (stage 324) and determines if the user entry isambiguous or is an exact match to one address in the data stores(decision point 326). If the address is not ambiguous because an exactmatch is found, the address is displayed in a resolved status (stage327) and the system checks to see if there are any other data elementsto resolve (decision point 350).

If the address is ambiguous and no exact match is found (decision point326), the system uses business logic 208 to generate a list of potentialmatches and appropriate actions to take (stage 328). The system displaysa status message, a list of potential matches, and/or options forappropriate actions in a context menu in the same context as the rest ofthe application (stage 336). If the status is unresolved because nomatch was found (stage 338) the user resolves it by deleting the entry(stage 340) or by selecting from a list of potential matches (stage346). If the status is ambiguous because more than one match was found,the user can select from a list of potential matches (stage 346). Theresolution process is repeated until all data elements are resolved(decision point 350). When no more data elements remain to be resolved(decision point 350), the process then ends at end point 352.

FIG. 6 illustrates the process for resuming the resolution process inone implementation in more detail. In one form, the process of FIG. 6 isat least partially implemented in the operating logic of computingdevice 100. The process starts at start point 370 when the user selectsa data element resolution option (e.g. “Check Names”) (stage 372) tocheck the validity of all data elements entered into data element fields(decision point 374). In one implementation, a user enters a particulardata element, such as a plain text name, and the system attempts toresolve that data element to an identifier associated with theparticular element, such as an email address. In another implementation,the user enters a particular data element and the system attempts toresolve that data element to make sure it matches something that exists.If all data elements are recognized as valid (decision point 374), theprocess ends at end point 376. If one or more data elements arequestionable, or ambiguous, the user will see a context menu (stage 378)displaying a list of potential matches and actions to resolve theambiguity without requiring the user to change context (e.g. withouthaving to go to another screen, etc.).

If the user wishes to continue working with the activity (e.g. emailmessage) (decision point 380), they can work with it as desired (stage381). While returning to work with the activity (e.g. email), the usercan close the context menu (stage 380) by simply clicking elsewhere inthe activity or message, by pressing a designated key or keys (such asEsc), and/or by other methods that cause the context menu to lose focus.The user can return to the context menu any time before attempting tofinalize the activity, such as send the email. The resolution processcan be resumed later by selecting the unresolved address in a particularfashion (e.g. right-click or other selection) to resolve the potentiallist of matches (stage 382).

If the user does not wish to exit the resolution process to continueworking with the activity (decision point 380), or if the user stops andthen resumes the resolution process (stage 382), the user then selects adesired address from the list of potential matches and actions (stage384).

In one implementation, ambiguous data elements are differentiated fromvalid data elements by appearing on-screen in a different color and/orby appearing with a dashed underline instead of a solid underline. Whenthe data element is resolved, the user will either be allowed tofinalize the activity (e.g. send the email) or resolve the nextambiguous data element (if more than one is present). A new context menuwith potential matches and actions will appear in turn for eachambiguous data element. When all data elements are resolved (decisionpoint 386), the process ends at end point 388.

FIG. 7 is a flow diagram for one implementation that illustrates whathappens when a user attempts to finalize an activity, such as byattempting to send an email message. In one form, the process of FIG. 7is at least partially implemented in the operating logic of computingdevice 100. FIG. 7 begins at start point 400 with the user selecting anoption that instructs the system that the user wishes to finalize theactivity (e.g. send an email). The system checks all data elements forambiguity and resolution status (stage 412). The system then displays acontext menu consisting of a status message and/or a list of actionsthat may be taken. Options for actions vary according to whether thesystem encountered an error in the process, whether the system found nomatch, one or more partial matches, or more than one exact match.

In one implementation, the system does not check elements until the useractivates that feature, such as by selecting a “check names” option. Inanother implementation, the system checks elements automatically at apre-determined point in time, such as when the user exits the dataelement field (e.g. the address field). When the system checks anelement and it matches a unique address in the data store, then theaddress name is considered resolved (stage 436). If a checked elementcannot be matched to a data element in the data store (stage 418), theuser must delete that name from the address field or reenter the name(stage 420). If one or more partial matches are found (stage 422), or ifmore than one exact match is found (stage 430), then the user can selectthe correct data element from a list that appears in the context menu(424). If a network or server error (stage 432) occurs during thechecking process, then the user is instructed to try again (stage 434).The process may repeat itself (stage 426) as needed. The process ends atend point 428 when all data elements have been resolved. It will beappreciated that some, all, or additional stages than as listed in thefigures herein could be used in alternate embodiments, and/or in adifferent order than as described.

Turning now to FIGS. 8-11, simulated screens are shown to illustrate auser interface that allows a user to view and interact with an emailresolution context menu created using data element resolutionapplication 200. These screens can be displayed to users on outputdevice(s) 111. Furthermore, these screens can receive input from usersfrom input device(s) 112.

When the user selects the data element resolution option (e.g. “CheckNames”) (stage 372), the system analyzes all entered data elementsagainst existing data store(s) (stage 324). The results of the analysisappear as a context menu. The information in the context menu candiffer, as depicted in FIGS. 8-11. FIG. 8 shows a simulated screen 500that appears in one implementation when the resolution process cannotfind a match for an ambiguous data element 510. The context menu 520displays one option given for resolving such an address, that is, toremove it without sending the email 530. Clicking on this option deletesthe ambiguous address from the address field indicated. Then the usercan re-enter an address or send the email.

FIG. 9 shows a simulated screen 600 of one implementation that appearswhen the resolution process finds no exact match, but finds partial orpotential matches. The context menu 620 displays all potential matchesthat the user can select from 630, plus the option of removing the dataelement 640. If the user clicks on an address in the context menu, itreplaces the ambiguous address 610.

FIG. 10 shows a simulated screen 660 of one implementation that appearswhen the resolution process finds more than one exact match for anambiguous data element 670. The context menu 680 lists potential matchesis seen in 690. If the user clicks on an address in the context menu, itreplaces the ambiguous address 670. As in all other context menus, theoption for removing the data element is listed 695.

FIG. 11 shows a simulated screen 700 of one implementation that appearswhen a server error occurs. In the event that a system error preventsthe analysis of a potential match, the user's options are to close thecontext menu 720 and try again 730 when system integrity is restored, orto delete the address without sending the email (740). In thesesimulated screens illustrated in FIGS. 8-11, the resolution context menuis shown within the same context as the rest of the email application,thereby allowing the user to fix the problem without having to gothrough one or more other screens and/or lose the ability to keepworking with the email and resume the resolution process later.

Although the subject matter has been described in language specific tostructural features and/or methodological acts, it is to be understoodthat the subject matter defined in the appended claims is notnecessarily limited to the specific features or acts described above.Rather, the specific features and acts described above are disclosed asexample forms of implementing the claims. All equivalents, changes, andmodifications that come within the spirit of the implementations asdescribed herein and/or by the following claims are desired to beprotected.

For example, a person of ordinary skill in the computer software artwill recognize that the client and/or server arrangements, userinterface screen content, and/or data layouts as described in theexamples discussed herein could be organized differently on one or morecomputers to include fewer or additional options or features than asportrayed in the examples.

What is claimed is:
 1. A method for resolving data elements in-contextwith an activity, the method comprising: receiving one or more dataelements from a user via a user interface screen for performing anactivity; performing a resolution process that includes: determiningthat one of the one or more data elements is unresolved, retrieving alist of potential matches for the unresolved data element from a datastore, displaying at least a portion of the list of potential matches tothe user within the same user interface screen for performing theactivity, and allowing the user to select a corrected data element fromthe displayed at least a portion of the list; and allowing the user tostop the resolution process to continue working with the user interfacescreen for performing the activity and later complete the resolutionprocess in the same user interface screen.
 2. The method of claim 1,wherein receiving the one or more data elements from the user via theuser interface screen for performing the activity comprises: receivingthe one or more data elements from the user via a user interface screenfor creating a message.
 3. The method of claim 1, wherein retrieving thelist of potential matches for the unresolved data element from the datastore comprises: contacting a web server to retrieve the list ofpotential matches for the unresolved data element from the data store.4. The method of claim 1, wherein receiving the one or more dataelements comprises: receiving one or more email addresses.
 5. The methodof claim 1, wherein receiving the one or more data elements comprises:receiving one or more postal addresses.
 6. The method of claim 1,wherein allowing the user to later complete the resolution processcomprises: allowing the user to later complete the resolution process byselecting the unresolved data element.
 7. The method of claim 1, whereindisplaying the at least a portion of the list of potential matches tothe user in the same user interface screen for performing the activitycomprises: displaying the at least a portion of the list of potentialmatches to the user in a menu within the same user interface screen forperforming the activity.
 8. The method of claim 1, wherein retrievingthe list of potential matches for the unresolved data element comprises:retrieving one or more data elements that do not exactly match theunresolved data element.
 9. The method of claim 1, wherein retrievingthe list of potential matches for the unresolved data element comprises:retrieving a plurality of data elements that exactly match theunresolved data element.
 10. A computer-readable storage device havingcomputer-executable instructions for causing a computer to perform stepscomprising: checking a data element entered by a user via a userinterface screen for performing an activity and determining if the dataelement is unresolved; if the data element is determined to beunresolved, performing a resolution process comprising: identifying oneor more possible matching data elements for the unresolved data element;displaying the one or more possible matching data elements in the sameuser interface screen for performing the activity; allowing the user tostop the resolution process to continue performing the activity andlater complete the resolution process in the same user interface screenfor performing the activity; and allowing the user to finalize theactivity once the unresolved data element is resolved.
 11. Thecomputer-readable storage device of claim 10, wherein the data elementis an email address.
 12. The computer-readable storage device of claim10, wherein the data element is a postal address.
 13. Thecomputer-readable storage device of claim 10, wherein allowing the userto later complete the resolution process comprises: allowing the user tolater complete the resolution process by selecting the unresolved dataelement.
 14. The computer-readable storage device of claim 10, whereindisplaying the one or more possible matching data elements for theunresolved data element in the same user interface screen for performingthe activity comprises: displaying the one or more possible matchingdata elements for the unresolved data element in a menu in the same userinterface screen for performing the activity.
 15. The computer-readablestorage device of claim 10, wherein identifying the one or more possiblematching data elements for the unresolved data element comprises:identifying one or more data elements that do not exactly match theunresolved data element.
 16. The computer-readable storage device ofclaim 10, wherein identifying the one or more possible matching dataelements for the unresolved data element comprises: identifying aplurality of data elements that exactly match the unresolved dataelement.
 17. The computer-readable storage device of claim 10, whereinthe activity is creating a message and wherein allowing the user tofinalize the activity once the unresolved data element is resolvedcomprises allowing the user to send the message once the unresolved dataelement is resolved.
 18. A method for resolving email addressesin-context with an email message comprising the steps of: checking anemail address entered by a user via a user interface screen for creatingan email message and determining if the email address is unresolved; ifthe email address is unresolved, performing a resolution processcomprising: determining that one or more possible matching data elementsare available for the unresolved email address; displaying the one ormore possible matching data elements in the user interface screen forcreating the email message; allowing the user to resolve the emailaddress by selecting one of the one or more potential data elementsdisplayed in the user interface screen for creating the email message;allowing the user to stop the resolution process to continue workingwith the user interface screen for creating the email message and latercomplete the resolution process in the same user interface screen; andallowing the user to send the email message once the unresolved emailaddress is resolved.
 19. The method of claim 18, wherein determiningthat one or more possible matching data elements are available for theunresolved email address comprises: identifying one or more emailaddresses that do not exactly match the unresolved email address. 20.The method of claim 18, wherein determining that one or more possiblematching data elements are available for the unresolved email addresscomprises: identifying a plurality of email addresses that exactly matchthe unresolved email address.